﻿var ws;
var tryonce = false;
var connected = false;
var server_addr = "ws://127.0.0.1:18888"; //本机端口地址
var msg_handler = {};
var orgwidth = 0;
var orgheight = 0;

var resetx = 20;
var resety = 20;
var resetwidth = 300;
var resetheight = 400;

var iswaiting = false;
var isCams = false; //是否存在拍照动作
// 使用JSON  向服务发送的操作命令
const CLT_MSG = {
  // 打开相机 cap:相机ID
  BEGIN_CAP: 1,
  // 关闭相机 cap:相机ID
  STOP_CAP: 2,
  // 获取PID
  GET_PID: 3,
  // 获取分辨率
  GET_FBL: 4,
  //设置分辨率
  SET_FBL: 5,
  //设置MJPG格式
  SET_MJPG: 6,
  //设置视频旋转
  SET_TURN: 7,
  //设置视频截图保存的jpg质量
  SET_QUALITY: 8,
  //设置自动裁边
  SET_AUTOCROP: 9,
  //设置预设框选
  SET_PREST: 10,
  //获取当前预设框选
  GET_PREST_INFO: 11,
  //视频格式弹窗
  FORMAT_DLG: 12,
  //视频属性弹窗
  PROPERTY_DLG: 13,
  //设置截图颜色模式 彩色 黑白 灰度
  SET_COLOR_MODEL: 14,
  //截图
  GET_PICTURE: 15,
  //设置去底色参数
  SET_CLEAN_PARAM: 16,
  //内存截图
  GET_PICTURE_MEM: 17,
  //base64测试
  TEST_BASE64: 18,
  //制作PDF的临时目录
  SET_TEMPDIR: 19,
  //开始制作PDF
  BEGIN_PDF: 20,
  //PDF截图 保存到PDF临时目录
  GET_PDF_PICTURES: 21,
  //结束制作PDF
  END_PDF_PICTURES: 22,
  //PDF文件转为文件里的BASE64码
  PDF_TO_BASE64: 23,
  //文件里的BASE64码转为PDF文件
  BASE64_TO_PDF: 24,
  //PDF文件转为BASE64字符串
  PDF_TO_BASE64_STR: 25,
  //删除制作PDF的图片文件
  DEL_PICTURE_PDF: 26,
  //打印图片
  PRINT_IMAGE: 27,
  //设置显示错误弹窗
  SHOW_ERROR_BOX: 28,
  //获取视频连接事件
  GET_EVENT: 29,
  //预设框选鼠标消息
  PRESET_MOUSEDOWN: 30,
  PRESET_MOUSEMOVE: 31,
  PRESET_MOUSEUP: 32,

  //多图裁剪
  MULTI_DETE: 33,
  //人脸检测
  FACE_DETE: 34,
  //设置DPI
  SET_DPI: 35,
  //版本信息
  LIB_INFO: 36,

  IDCARD_COPY: 37,
  CANCEL_IDCARD_COPY: 38,

  //人证对比
  FI_INIT: 41,
  IDCARD_COMPARE: 40,
  FI_UNIT: 42,

  BEGIN_RECORD_VIDEO: 43,
  STOP_RECORD_VIDEO: 44,
  PAUSE_RECORD_VIDEO: 45,

  BASE64_COMPARE: 46,
  DETECT_FACE: 47,
  STOP_DETECT_FACE: 48,

  SET_AUTOOFFSET: 111,

  //http上传下载
  HTTP_UPLOAD: 120,
  HTTP_DOWNLOAD: 121,
  HTTP_GETPROGRESS: 122,
  HTTP_GETRESULT: 123,
  HTTP_CLOSE: 124,
};

const SVR_BIN_MSG = {
  CAP_FRAME: 1, //后台帧消息
};

export function onLoad() { //页面load消息
  if (ws) {
    return;
  }

  //output("正在连接：" + server_addr);
  ws = new WebSocket(server_addr);
  ws.onopen = function (evt) {
    if (connected) {
      return;
    }

    connected = true;
    output("已经连接到服务器");
    if (connected == true) {
      setTimeout(() => {
        SetPDFPath()
      }, 1000)
    }
  };

  ws.onclose = function (evt) {
    if (!connected) {
      if (!tryonce) {
        window.location.href = "FLShell://"
        setTimeout("onLoad()", 1000); //修改此处
        tryonce = true;
      } else {
        setTimeout("onLoad()", 1000);
      }
    } else {
      output("已断开服务器连接");
      connected = false;
    }

    ws = null;
  }

  ws.onmessage = function (evt) {
    if (evt.data.length === 0) {
      return;
    }

    if (typeof evt.data === 'string') {
      var msg = JSON.parse(evt.data);
      if (msg.err && msg.err !== 0) {
        // output("错误 - " + msg.err + ", " + msg.msg);
        output("错误 - " + msg.msg + ' ,' + '请退出后刷新重新运行！');

      } else if (msg.msg) {
        output(msg.msg);
      }

      if (msg.user_data) {
        callback[msg.user_data](msg);
        if (typeof msg.user_data === 'number') {
          callback[msg.user_data] = undefined;
        }
      }
    } else {
      //上传数据格式做了优化处理，视频帧数据使用json的jpg数据
      var file = new FileReader();
      file.onload = function (evt) {
        if (evt.target.readyState == FileReader.DONE) {
          var msg = JSON.parse(evt.target.result);
          if (msg.proto == SVR_BIN_MSG.CAP_FRAME) {
            return drawImage(msg);
          }
        }
      };

      file.readAsText(evt.data);
    }
  }

  var clicked = false;
  var canvas = document.getElementById("cam");

  canvas.onmousedown = function (e) {
    this.style.cursor = "crosshair";

    clicked = true;

    if (e.offsetX && e.offsetY)
      sendMsg(CLT_MSG.PRESET_MOUSEDOWN, {
        origX: e.offsetX,
        origY: e.offsetY
      }, function (msg) {
        if (msg.err !== 0) {
          return;
        }
      });
    else
      sendMsg(CLT_MSG.PRESET_MOUSEDOWN, {
        origX: e.layerX,
        origY: e.layerY
      }, function (msg) {
        if (msg.err !== 0) {
          return;
        }
      });
  }

  canvas.onmousemove = function (e) {
    if (!clicked) {
      this.style.cursor = "default";
      return;
    }
    this.style.cursor = "crosshair";

    if (e.offsetX && e.offsetY)
      sendMsg(CLT_MSG.PRESET_MOUSEMOVE, {
        offx: e.offsetX,
        offy: e.offsetY
      }, function (msg) {
        if (msg.err !== 0) {
          return;
        }
      });
    else
      sendMsg(CLT_MSG.PRESET_MOUSEMOVE, {
        offx: e.layerX,
        offy: e.layerY
      }, function (msg) {
        if (msg.err !== 0) {
          return;
        }
      });
  }

  canvas.onmouseup = function (e) {
    this.style.cursor = "default";
    if (!clicked) {
      return;
    }

    if (e.offsetX && e.offsetY)
      sendMsg(CLT_MSG.PRESET_MOUSEUP, {
        offx: e.offsetX,
        offy: e.offsetY
      }, function (msg) {
        if (msg.err !== 0) {
          return;
        }
      });
    else
      sendMsg(CLT_MSG.PRESET_MOUSEUP, {
        offx: e.layerX,
        offy: e.layerY
      }, function (msg) {
        if (msg.err !== 0) {
          return;
        }
      });

    clicked = false;
  }
}

var context = 1;
var callback = {}

export function sendMsg(proto, msg, cb) { //向后台发送消息的处理函数
  if (!ws) {
    return;
  }

  if (typeof msg !== 'object') {
    if (typeof msg === 'function') {
      cb = msg;
      msg = {};
    } else {
      msg = {}
    }
  }

  msg.proto = proto;
  if (typeof cb === 'function') {
    callback[++context] = cb;
    msg.user_data = context;
  }

  ws.send(JSON.stringify(msg));
}

export function output(content) //打印调试信息函数
{
  if (content.length == 0) {
    return;
  }
  // console.log(content)

  var console = document.getElementById("Console");
  if (console) {
    console.value = content;
    console.value += '\r';
    console.scrollTop = console.scrollHeight;
  } else {
    console.log(content)
  }
}

export function checkTimestamp(svr_time) //检查视频帧时间戳
{
  var myDate = new Date();
  var clt_time = myDate.getSeconds() * 1000 + myDate.getMilliseconds();
  if (clt_time < svr_time) {
    clt_time += 60 * 1000;
  }

  return clt_time - svr_time < 3000;
}

const base_offset = 3;
var orgdrawwidth = 0;
var orgdrawheight = 0;

//上传数据格式做了优化处理，视频帧数据使用json的jpg数据
export function drawImage(data) //视频帧绘制函数
{
  // LE
  // 校验视频是否在一定时间内的
  if (!checkTimestamp(data.timestamp)) {
    return;
  }

  var width = data.width;
  var height = data.height;
  var image = new Image();
  image.onload = function () {
    var cam = document.getElementById("cam");
    var context = cam.getContext("2d");
    if (orgdrawwidth != width || orgdrawheight != height) {
      orgdrawwidth = width;
      orgdrawheight = height
      cam.height = cam.height;
    }
    context.drawImage(image, 0, 0, width, height);
  }
  image.src = "data:image/jpg;base64," + data.img;
}

export function cam_switch(capID) //打开视频
{
  if (iswaiting) return;
  iswaiting = true;
  sendMsg(CLT_MSG.BEGIN_CAP, {
    cap: capID
  }, function (msg) {
    if (msg.err !== 0) {
      iswaiting = false;
      return output("打开视频失败，如果已经打开摄像头请忽略！ 请检查USB接口连接是否成功 或 其他界面已经存在打开高拍仪的页面,请关闭后刷新重试！");
    }

    orgwidth = msg.width;
    orgheight = msg.height;

    ResetBox();

    output("打开视频" + capID + "成功，width = " + msg.width + ",height =  " + msg.height);

    iswaiting = false;
  });

}

export function CloseVideo() { //关闭视频
  if (iswaiting) return;
  iswaiting = true;
  sendMsg(CLT_MSG.STOP_CAP, function (msg) {
    if (msg.err !== 0) {
      iswaiting = false;
      return output("关闭视频失败");
    }

    var cam = document.getElementById('cam');
    orgdrawwidth = 0;
    orgdrawheight = 0
    cam.height = cam.height;
    output("关闭视频成功");
    iswaiting = false;
  });
}

export function GetInitRet() { //获取初始化结果
  if (iswaiting) return;
  iswaiting = true;
  sendMsg(CLT_MSG.GET_EVENT, function (msg) {
    if (msg.err !== 0) {
      iswaiting = false;
      return;
    }

    var event = msg.event;
    switch (event) {
      case 2:
        output("设备连接中断，请重新连接后再次打开视频。");
        break;

      case 1:
        output("初始化成功");
        break;

      case 0:
        output("设备非法");
        break;
    }
    iswaiting = false;
  });
};

export function GetPid() { //获取PID
  if (iswaiting) return;
  iswaiting = true;
  sendMsg(CLT_MSG.GET_PID, function (msg) {
    if (msg.err !== 0) {
      iswaiting = false;
      return;
    }

    output("pid : " + msg.pid);
    iswaiting = false;
  });
};

export function GetFbl() { //获取分辨率
  if (iswaiting) return;
  iswaiting = true;
  sendMsg(CLT_MSG.GET_FBL, function (msg) {
    if (msg.err !== 0) {
      iswaiting = false;
      return;
    }

    output("分辨率 : " + msg.fbl);
    iswaiting = false;
  });
};

export function SetResolution() {
  if (iswaiting) return;
  iswaiting = true;
  var first = false;
  var second = false;
  sendMsg(CLT_MSG.SET_MJPG, {
    isMJPG: 1
  }, function (msg) { //设置MJPG格式
    if (msg.err !== 0) {
      first = true;
      if (first == true && second == true) iswaiting = false;
      return;
    }
    output("MJPG : " + 1);
    first = true;
    if (first == true && second == true) iswaiting = false;
  });
  sendMsg(CLT_MSG.SET_FBL, {
    width: 800,
    height: 600
  }, function (msg) { //设置分辨率
    if (msg.err !== 0) {
      if (msg.err == 106) output("设置视频格式失败");
      second = true;
      if (first == true && second == true) iswaiting = false;
      return;
    }
    output("设置分辨率 : width=" + 800 + ",height=" + 600);
    second = true;
    if (first == true && second == true) iswaiting = false;
  });
};

var oriT = 0;
var rotanumber = 0;
export function SetOrientation() { //设置视频旋转方向
  //	设置转动 0 正常 1 上下转 2 左转 3 右转
  if (iswaiting) return;
  iswaiting = true;

  oriT = 2;
  if (oriT == 1) rotanumber = 2;
  else if (oriT == 2) rotanumber = 3;
  else if (oriT == 3) rotanumber = 1;

  sendMsg(CLT_MSG.SET_TURN, {
    turn: oriT
  }, function (msg) {
    if (msg.err !== 0) {
      iswaiting = false;
      return;
    }

    // output("设置旋转 : turn=" + oriT);
    iswaiting = false;
  });
};

export function SetLeft() { //设置视频旋转方向
  //	设置转动 0 正常 1 上下转 2 左转 3 右转
  if (iswaiting) return;
  iswaiting = true;
  rotanumber--;
  var T = 0;
  if (rotanumber % 4 == 0) T = 0;
  else if (rotanumber % 4 == -1 || rotanumber % 4 == 3) T = 2;
  else if (rotanumber % 4 == -2 || rotanumber % 4 == 2) T = 1;
  else if (rotanumber % 4 == -3 || rotanumber % 4 == 1) T = 3;

  sendMsg(CLT_MSG.SET_TURN, {
    turn: T
  }, function (msg) {
    if (msg.err !== 0) {
      iswaiting = false;
      return;
    }

    // output("设置旋转 : turn=" + T);
    output("左旋成功!");

    iswaiting = false;
  });
};

export function SetRight() { //设置视频旋转方向
  //	设置转动 0 正常 1 上下转 2 左转 3 右转
  if (iswaiting) return;
  iswaiting = true;
  rotanumber++;
  var T = 0;
  if (rotanumber % 4 == 0) T = 0;
  else if (rotanumber % 4 == 1 || rotanumber % 4 == -3) T = 3;
  else if (rotanumber % 4 == 2 || rotanumber % 4 == -2) T = 1;
  else if (rotanumber % 4 == 3 || rotanumber % 4 == -1) T = 2;

  sendMsg(CLT_MSG.SET_TURN, {
    turn: T
  }, function (msg) {
    if (msg.err !== 0) {
      iswaiting = false;
      return;
    }

    // output("设置旋转 : turn=" + T);
    output("右旋成功!");

    iswaiting = false;
  });
};

export function SetQuality() { //设置截图保存的jpg格式压缩质量
  if (iswaiting) return;
  iswaiting = true;
  sendMsg(CLT_MSG.SET_QUALITY, {
    quality: 50
  }, function (msg) {
    if (msg.err !== 0) {
      iswaiting = false;
      return;
    }
    output("设置截图图片质量 : quality=" + 50);
    iswaiting = false;
  });
};

export function SetOffset() { //设置裁黑边大小 负数表示往里边裁（-1往里边表示裁1%）正数表示往外延伸（1表示往外延伸1%）
  if (iswaiting) return;
  iswaiting = true;
  sendMsg(CLT_MSG.SET_AUTOOFFSET, {
    offset: 0
  }, function (msg) {
    if (msg.err !== 0) {
      iswaiting = false;
      return;
    }
    output("设置去黑边: offset=" + 0);
    iswaiting = false;
  });
};

export function SetAutoCutOn() { //设置自动裁边开启
  if (iswaiting) return;
  iswaiting = true;
  //带不带autocutoffset参数都可，此参数与SetOffset函数同效果
  //sendMsg(CLT_MSG.SET_AUTOCROP, {open:1},function(msg){
  sendMsg(CLT_MSG.SET_AUTOCROP, {
    open: 1,
    autocutoffset: -3
  }, function (msg) {
    if (msg.err !== 0) {
      iswaiting = false;
      bAutoCut = false;
      return;
    }
    output("设置自动裁边 : open=" + 1);
    bAutoCut = true;
    iswaiting = false;
  });
};

export function SetAutoCutOff() { //设置自动裁边关闭 
  if (iswaiting) return;
  iswaiting = true;
  //带不带autocutoffset参数都可，此参数与SetOffset函数同效果
  //sendMsg(CLT_MSG.SET_AUTOCROP, {open:0},function(msg){
  sendMsg(CLT_MSG.SET_AUTOCROP, {
    open: 0,
    autocutoffset: -3
  }, function (msg) {
    if (msg.err !== 0) {
      iswaiting = false;
      return;
    }
    output("设置自动裁边 : open=" + 0);
    iswaiting = false;
  });
};

export function SetBox() { //设置预设框选
  if (iswaiting) return;
  iswaiting = true;
  resetx = 20;
  resety = 20;
  resetwidth = 300;
  resetheight = 400;
  sendMsg(CLT_MSG.SET_PREST, {
    left: resetx,
    top: resety,
    width: resetwidth,
    height: resetheight
  }, function (msg) {
    if (msg.err !== 0) {
      iswaiting = false;
      return;
    }
    output("设置预设框选 : left=" + resetx + ",top=" + resety + ",width=" + resetwidth + ",height=" + resetheight);
    iswaiting = false;
  });
};

export function ShowResetInfo() { //获取当前预设框选参数
  if (iswaiting) return;
  iswaiting = true;
  sendMsg(CLT_MSG.GET_PREST_INFO, function (msg) {
    if (msg.err !== 0) {
      iswaiting = false;
      return;
    }
    output("当前预设 : " + msg.prest_info);
    iswaiting = false;
  });
};

export function ResetBox() { //取消预设框选
  if (iswaiting) return;
  iswaiting = true;
  sendMsg(CLT_MSG.SET_PREST, {
    left: 0,
    top: 0,
    width: 0,
    height: 0
  }, function (msg) {
    if (msg.err !== 0) {
      iswaiting = false;
      return;
    }
    resetx = 0;
    resety = 0;
    resetwidth = 0;
    resetheight = 0;
    output("取消预设框选");
    iswaiting = false;
  });
};

export function FormatDlg() { //视频格式弹窗
  if (iswaiting) return;
  iswaiting = true;
  sendMsg(CLT_MSG.FORMAT_DLG, function (msg) {
    if (msg.err !== 0) {
      iswaiting = false;
      return;
    }
    iswaiting = false;
  });
};

export function PropertyDlg() { //视频属性弹窗
  if (iswaiting) return;
  iswaiting = true;
  sendMsg(CLT_MSG.PROPERTY_DLG, function (msg) {
    if (msg.err !== 0) {
      iswaiting = false;
      return;
    }
    iswaiting = false;
  });
};

export function bb() {
  //sendMsg(CLT_MSG.SET_COLOR_MODEL,{color:1});// 0\ 1\ 2   //设置颜色模式 只针对截图
  let baseUrl = null;
  if (iswaiting) return;
  iswaiting = true;

  sendMsg(CLT_MSG.SET_QUALITY, {
    quality: 50
  }, function (msg) { //设置jpg质量
    if (msg.err !== 0) {
      iswaiting = false;
      return;
    }
    output("设置截图图片质量 : quality=" + 50);

    sendMsg(CLT_MSG.GET_PICTURE, {
      path: "D:\\tp\\1234.jpg",
      turn: 0
    }, function (msg) { //截图
      if (msg.err !== 0) {
        iswaiting = false;
        return;
      }
      var s = "data:image/jpg;base64," + msg.base64str;
      let a = document.getElementById("Base64IMG").src = s; //网页预览图片
      output("base64 长度 : " + s.length);
      console.log(a)
      iswaiting = false;
      //document.getElementById("Base64IMG").src= "D:\\1234.jpg?" + Math.random();//网页预览图片
    });
  });
};

export function bbase64() { //内存截图
  if (iswaiting) return;
  iswaiting = true;

  sendMsg(CLT_MSG.SET_QUALITY, {
    quality: 50
  }, function (msg) { //设置jpg质量
    if (msg.err !== 0) {
      iswaiting = false;
      return;
    }
    output("设置截图图片质量 : quality=" + 50);

    sendMsg(CLT_MSG.GET_PICTURE_MEM, {
      turn: 0
    }, function (msg) {
      if (msg.err !== 0) {
        iswaiting = false;
        return;
      }
      var s = "data:image/jpg;base64," + msg.base64str;
      document.getElementById("Base64IMG").src = s; //网页预览图片
      alert(s)
      output("base64 长度 : " + s.length);
      iswaiting = false;
    });
  });
};

export function TestBase64() { //base64编码测试
  if (iswaiting) return;
  iswaiting = true;
  sendMsg(CLT_MSG.TEST_BASE64, {
    code: "123456789"
  }, function (msg) {
    if (msg.err !== 0) {
      iswaiting = false;
      return;
    }
    output("base64 内容 : " + msg.base64str);
    iswaiting = false;
  });
};

export function bbStartClean() { //开启去底色
  if (iswaiting) return;
  iswaiting = true;
  sendMsg(CLT_MSG.SET_CLEAN_PARAM, {
    param1: 280,
    param2: 1.15,
    param3: 8
  }, function (msg) {
    if (msg.err !== 0) {
      iswaiting = false;
      return;
    }
    output("去底色: " + 280 + "," + 1.15 + "," + 8);
    iswaiting = false;
  });
};

export function bbCloseClean() { //关闭去底色
  if (iswaiting) return;
  iswaiting = true;
  sendMsg(CLT_MSG.SET_CLEAN_PARAM, {
    param1: -1
  }, function (msg) {
    if (msg.err !== 0) {
      iswaiting = false;
      return;
    }
    output("去底色: " + -1);
    iswaiting = false;
  });
};

export function SetPDFPath() { //设置制作PDF临时目录

  if (iswaiting) return;
  iswaiting = true;
  sendMsg(CLT_MSG.SET_TEMPDIR, {
    path: "D:\\contractPdf\\temp"
  }, function (msg) {
    if (msg.err !== 0) {
      sendMsg(CLT_MSG.SET_TEMPDIR, {
        path: "E:\\contractPdf\\temp"
      }, function (msg) {
        if (msg.err !== 0) {
          iswaiting = false;
          return;
        }
        output("设置PDF路径: " + "E:\\contractPdf\\temp");
        iswaiting = false;
      });
      return;
    }
    output("设置PDF路径: " + "D:\\contractPdf\\temp");
    iswaiting = false;
  });
};

export function BeginPDF(isCam) { //开始制作PDF
  // 初始化
  isCams = false;
  if (iswaiting) return;
  iswaiting = true;
  sendMsg(CLT_MSG.BEGIN_PDF, function (msg) {
    if (msg.err !== 0) {
      iswaiting = false;
      return;
    }
    // output("开始制作PDF,已经准备完毕，点击拍照即可！");
    iswaiting = false;
  });
};

let getPDF = 0
export function GetPDF() { //PDF截图 保存到PDF临时目录
  if (iswaiting) return;
  iswaiting = true;
  sendMsg(CLT_MSG.GET_PDF_PICTURES, {
    turn: 0
  }, function (msg) {
    if (msg.err !== 0) {
      iswaiting = false;
      return;
    }
    if (getPDF == 0) {
      document.querySelector(".img-box1").style.display = "inline-block";
      document.querySelector(".img-box1").style.width = "230px"
    } else if (getPDF == 1) {
      document.querySelector(".img-box2").style.display = "inline-block"
      document.querySelector(".img-box2").style.width = "230px"

    } else if (getPDF == 2) {
      document.querySelector(".img-box3").style.display = "inline-block"
      document.querySelector(".img-box3").style.width = "230px"
    }
    ++getPDF;
    document.getElementById("IMG3").src = null;
    document.getElementById("IMG3").src = document.getElementById("IMG2").src;

    document.getElementById("IMG2").src = null;
    document.getElementById("IMG2").src = document.getElementById("IMG1").src;

    var s = "data:image/jpg;base64," + msg.base64str;
    document.getElementById("IMG1").src = s; //网页预览图片
    // output("拍摄成功!  PDF文件 : " + msg.path);
    output("拍摄成功!");
    setTimeout(() => {
      output("请继续拍照，拍照完成请点击右侧拍照完成进行上传!");
    }, 1000)
    iswaiting = false;
    isCams = true;

  });
};


export function EndPDF(pdfName) { // 结束制作PDF  
  if (!isCams) return;
  if (iswaiting) return;
  iswaiting = true;
  let d = pdfName;
  // console.log(d)
  sendMsg(CLT_MSG.END_PDF_PICTURES, {
    path: `D:\\contractPdf\\${d}.pdf`
  }, function (msg) {
    if (msg.err !== 0) {
      sendMsg(CLT_MSG.END_PDF_PICTURES, {
        path: "E:\\PDF\\contract.pdf"
      }, function (msg) {
        if (msg.err !== 0) {
          iswaiting = false;
          return;
        }

        output(`结束PDF PDF文件：" + "E:\\contractPdf\\${pdfName}.pdf`);
        iswaiting = false;
      });
      return;
    }

    output(`结束PDF PDF文件：" + "D:\\contractPdf\\${pdfName}.pdf`);
    iswaiting = false;
  });
};

export function PDFtoBASE64() { //PDF文件转码成BASE64文件   适合所有格式文件 非PDF也可使用
  if (iswaiting) return;
  iswaiting = true;
  sendMsg(CLT_MSG.PDF_TO_BASE64, {
    src: "D:\\tp\\1234.pdf",
    des: "D:\\tp\\temp\\1234.txt"
  }, function (msg) {
    if (msg.err !== 0) {
      iswaiting = false;
      if (msg.err == 108) {
        return output("读文件错误");
      }
      if (msg.err == 109) {
        return output("写文件错误");
      }
    }

    output("文件 ：" + "D:\\tp\\1234.pdf" + "转成base64 ：" + "D:\\tp\\temp\\1234.txt");
    iswaiting = false;
  });
};

export function BASE64toPDF() {
  //base64文件转成PDF文件 适合所有文件 非PDF文件也可使用
  if (iswaiting) return;
  iswaiting = true;
  sendMsg(CLT_MSG.BASE64_TO_PDF, {
    src: "D:\\tp\\base.txt",
    des: "D:\\tp\\pdfpdf.pdf"
  }, function (msg) {
    if (msg.err !== 0) {
      iswaiting = false;
      if (msg.err == 108) {
        return output("读文件错误");
      }
      if (msg.err == 109) {
        return output("写文件错误");
      }
    }

    output("base64文件: " + "D:\\tp\\temp\\1234.txt" + "转成:" + "D:\\tp\\pdfpdf.pdf");
    iswaiting = false;
  });
};

export function PDFtoBASE64Str() { //PDF文件转成BASE64码字符串 适合所有文件 非PDF文件也可使用
  if (iswaiting) return;
  iswaiting = true;
  sendMsg(CLT_MSG.PDF_TO_BASE64_STR, {
    file: "D:\\tp\\pdfpdf.pdf"
  }, function (msg) {
    if (msg.err !== 0) {
      iswaiting = false;
      if (msg.err == 108) {
        return output("读文件错误");
      }
    }

    alert(msg.base64str);
    output("文件 BASE64 长度: " + msg.base64str.length);
    iswaiting = false;
  });
};

export function printimage() { //打印图片
  if (iswaiting) return;
  iswaiting = true;
  sendMsg(CLT_MSG.PRINT_IMAGE, {
    file: "D:\\tp\\1234.jpg"
  }, function (msg) {
    if (msg.err !== 0) { //错误消息可以不用处理 在config.js中已经有了统一的打印处理 在output函数中设置打印位置
      iswaiting = false;
      if (msg.err == 112) {
        return output("开启打印机错误");
      }
      if (msg.err == 111) {
        return output("请检查打印机纸张");
      }
      if (msg.err == 110) {
        return output("没有默认打印机");
      }
    }
    output("打印作业号: " + msg.print_no);
    iswaiting = false;
  });
};

var last_time = 0;
var record_time = 0;
var recording = false;
var record_pause = false;
// setTimeout('update_timer()', 100);
export function _format(i) {
  if (i < 10) {
    return "0" + i;
  } else
    return i;
}
export function start_timer() {
  record_time = 0;
  var date = new Date();
  last_time = date.getTime();
  recording = true;
  record_pause = false;
}

export function pause_timer() {
  record_pause = !record_pause;
}

export function stop_timer() {
  recording = false;
}

export function update_timer() {
  // setTimeout('update_timer()', 100);
  if (!recording) {
    var timer_text = "";
    document.getElementById('record_timer').innerHTML = timer_text;
    return;
  }
  var date = new Date();
  var now = date.getTime();
  if (!record_pause)
    record_time += (now - last_time);

  var used_second = parseInt(record_time / 1000);
  last_time = now;
  var hour = parseInt(used_second / 3600);
  var minute = parseInt((used_second % 3600) / 60);
  var sec = used_second % 60;
  var timer_text = "正在录制视频，录制时长：" + _format(hour) + "小时" + _format(minute) + "分钟" + _format(sec) + "秒";
  document.getElementById('record_timer').innerHTML = timer_text;
}

export function beginrecord() //开始录制视频
{
  if (iswaiting) return;
  iswaiting = true;
  sendMsg(CLT_MSG.STOP_CAP, function (msg) {
    if (msg.err !== 0 && msg.err !== 105) {
      iswaiting = false;
      return output("关闭视频失败");
    }

    var cam = document.getElementById('cam');
    orgdrawwidth = 0;
    orgdrawheight = 0
    cam.height = cam.height;
    output("关闭视频成功");
    sendMsg(CLT_MSG.BEGIN_RECORD_VIDEO, {
      cap: 2,
      filename: "D:\\record.avi",
      width: 640,
      height: 480
    }, function (msg2) {
      if (msg2.err !== 0) {
        iswaiting = false;
        return;
      }
      orgwidth = msg2.width;
      orgheight = msg2.height;
      start_timer();
      output("开始录制视频:D:\\record.avi");
      iswaiting = false;
    });
    iswaiting = false;
  });
}

export function stoprecord() //停止录制视频
{
  stop_timer();
  if (iswaiting) return;
  iswaiting = true;
  sendMsg(CLT_MSG.STOP_RECORD_VIDEO, {
    cap: 2
  }, function (msg) {
    if (msg.err !== 0) {
      iswaiting = false;
      return;
    }
    output("停止录制视频");
    iswaiting = false;
  });
}

export function pauserecord() //暂停视频录制
{
  pause_timer();
  if (iswaiting) return;
  iswaiting = true;
  sendMsg(CLT_MSG.PAUSE_RECORD_VIDEO, {
    cap: 2
  }, function (msg) {
    if (msg.err !== 0) {
      iswaiting = false;
      return;
    }
    output("暂停录制视频");
    iswaiting = false;
  });
}

export function MultiDete() {
  if (iswaiting) return;
  iswaiting = true;
  sendMsg(CLT_MSG.MULTI_DETE, {
    retmode: 0
  }, function (msg) {
    if (msg.err !== 0) {
      iswaiting = false;
    }
    output("开启多图裁剪:retmode=" + 0);
    iswaiting = false;
  });

};

export function FaceDete() {
  if (iswaiting) return;
  iswaiting = true;
  sendMsg(CLT_MSG.FACE_DETE, {
    offset_mode: 1,
    offset: 0,
    width: 300,
    height: 300,
    retmode: 1
  }, function (msg) {
    if (msg.err !== 0) {
      iswaiting = false;
    }
    output("开启人脸检测：offset_mode=" + 1 + ",offset=" + 0 + ",width=" + 300 + ",height=" + 300 + ",retmode=" + 1);
    iswaiting = false;
  });

};

export function setDPI() {
  if (iswaiting) return;
  iswaiting = true;
  sendMsg(CLT_MSG.SET_DPI, {
    dpi: 200
  }, function (msg) {
    if (msg.err !== 0) {
      iswaiting = false;
    }
    output("设置截图内存截图dpi: " + 200);
    iswaiting = false;
  });

};

//双面合并(双面合并前请先开启自动裁边或手动裁边）
export function idCardCopyOne() {
  if (iswaiting) return;
  iswaiting = true;
  //page:1:第一页 2：第二页
  //filename = ""不会保存到本地，只通过内存编码base64  filename指定路径，既保存到指定路径，又内存编码
  //imagetype：0：未知类型 1：bmp 2:gif 3:jpg 4:png 5:ico 6:tif 	
  sendMsg(CLT_MSG.IDCARD_COPY, {
    page: 1,
    filename: "D:\\tp\\1234.jpg",
    imagetype: 3
  }, function (msg) {
    if (msg.err !== 0) {
      iswaiting = false;
      return;
    }
    output("双面合并第一页成功");
    iswaiting = false;
  });

}

export function idCardCopyTwo() {
  if (iswaiting) return;
  iswaiting = true;
  //page:1:第一页 2：第二页
  //filename = ""不会保存到本地，只通过内存编码base64  filename指定路径，既保存到指定路径，又内存编码
  //imagetype：0：未知类型 1：bmp 2:gif 3:jpg 4:png 5:ico 6:tif 
  sendMsg(CLT_MSG.IDCARD_COPY, {
    page: 2,
    filename: "D:\\tp\\1234.jpg",
    imagetype: 3
  }, function (msg) {
    if (msg.err !== 0) {
      iswaiting = false;
      return;
    }

    output("双面合并第二页成功");

    var s = "data:image/jpg;base64," + msg.base64str;
    document.getElementById("Base64IMG").src = s; //网页预览图片
    alert(s)
    output("base64 长度 : " + s.length);

    iswaiting = false;
  });
}

export function cancelIdCardCopy() {
  if (iswaiting) return;
  iswaiting = true;

  sendMsg(CLT_MSG.CANCEL_IDCARD_COPY, function (msg) {
    if (msg.err !== 0) {
      iswaiting = false;
      return;
    }
    output("取消双面合并成功");
    iswaiting = false;
  });
}

export function GetlibInfo() {
  if (iswaiting) return;
  iswaiting = true;
  sendMsg(CLT_MSG.LIB_INFO, function (msg) {
    if (msg.err !== 0) {
      iswaiting = false;
    }
    output("版本号: " + msg.libinfo);
    iswaiting = false;
  });

};

export function ShowErrorInfo() { //显示错误弹窗
  if (iswaiting) return;
  iswaiting = true;
  sendMsg(CLT_MSG.SHOW_ERROR_BOX, {
    on: 1
  }, function (msg) {
    if (msg.err !== 0) {
      iswaiting = false;
      return;
    }
    output("错误提示开关：" + 1);
    iswaiting = false;
  });
};

export function DelPDF3() { //删除制作PDF的图片文件
  if (iswaiting) return;
  iswaiting = true;
  sendMsg(CLT_MSG.DEL_PICTURE_PDF, {
    file: 1
  }, function (msg) {
    if (msg.err !== 0) {
      iswaiting = false;
      return;
    }
    output("删除PDF图片文件成功");
    iswaiting = false;
  });
  document.getElementById("IMG3").src = null;
  document.getElementById("IMG3").src = document.getElementById("IMG2").src;

  document.getElementById("IMG2").src = null;
  document.getElementById("IMG2").src = document.getElementById("IMG1").src;

  document.getElementById("IMG1").src = null;
};

export function DelPDF2() { //删除制作PDF的临时图片文件
  if (iswaiting) return;
  iswaiting = true;
  sendMsg(CLT_MSG.DEL_PICTURE_PDF, {
    file: 2
  }, function (msg) {
    if (msg.err !== 0) {
      iswaiting = false;
      return;
    }
    output("删除PDF图片文件成功");
    iswaiting = false;
  });
  document.getElementById("IMG2").src = null;
  document.getElementById("IMG2").src = document.getElementById("IMG1").src;
  document.getElementById("IMG1").src = null;
};

// 未改动
export function DelPDF1() { //删除制作PDF的临时图片文件
  if (iswaiting) return;
  iswaiting = true;
  sendMsg(CLT_MSG.DEL_PICTURE_PDF, {
    file: 3
  }, function (msg) {
    if (msg.err !== 0) {
      iswaiting = false;
      return;
    }
    output("删除PDF图片文件成功");
    iswaiting = false;
  });
  // document.getElementById("IMG1").src = null;
};
// export function DelPDF1(number) { //删除制作PDF的临时图片文件
//   if (iswaiting) return;
//   iswaiting = true;
//   sendMsg(CLT_MSG.DEL_PICTURE_PDF, {
//     file: number
//   }, function (msg) {
//     if (msg.err !== 0) {
//       iswaiting = false;
//       return;
//     }
//     output("删除PDF图片文件成功");
//     iswaiting = false;
//   });

// };

var bInitFI = false; //人脸识别模块是否初始化成功
var bInitLI = false; //活体检测是否初始化成功
export function InitFI() {
  sendMsg(CLT_MSG.FI_INIT, {
    channel: 1
  }, function (msg) {
    if (msg.err == 0) {
      bInitFI = true;
      bInitLI = true;
      output("人脸识别、活体检测初始化成功");
      return;
    } else if (msg.err == 131 || msg.err == 132 || msg.err == 133 || msg.err == 134) {
      bInitFI = false;
      bInitLI = false;
    } else if (msg.err == 135 || msg.err == 136) {
      bInitFI = true;
      bInitLI = false;
    }
  });
};

export function IDCardCompare() { //人证对比
  //if(iswaiting) return;
  if (bInitFI == false) {
    output("请先初始化人脸识别模块");
    return;
  }
  //iswaiting = true;
  var send = {
    file1: "D:\\1许.jpg",
    file2: "D:\\2许.jpg"
  };
  sendMsg(CLT_MSG.IDCARD_COMPARE, send, function (msg) {
    if (msg.err !== 0) {
      //iswaiting = false;
      return;
    }
    output("对比完成:" + send.file1 + "与" + send.file2 + "相似度" + msg.cmpresult);
    //iswaiting = false;
  });
};

export function Base64Compare() { //base64图图对比
  if (bInitFI == false) {
    output("请先初始化人脸识别模块");
    return;
  }
  var base64_1 = "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b29mYm9vbAEAAAAAUHN0U2Jvb2wBAAAAAEludGVlbnVtAAAAAEludGUAAAAAQUNscgAAAA9wcmludFNpeHRlZW5CaXRib29sAAAAAAtwcmludGVyTmFtZVRFWFQAAAASAEUAUABTAE8ATgAgAEwAMwA2ADAAIABTAGUAcgBpAGUAcwAAADhCSU0EOwAAAAABsgAAABAAAAABAAAAAAAScHJpbnRPdXRwdXRPcHRpb25zAAAAEgAAAABDcHRuYm9vbAAAAAAAQ2xicmJvb2wAAAAAAFJnc01ib29sAAAAAABDcm5DYm9vbAAAAAAAQ250Q2Jvb2wAAAAAAExibHNib29sAAAAAABOZ3R2Ym9vbAAAAAAARW1sRGJvb2wAAAAAAEludHJib29sAAAAAABCY2tnT2JqYwAAAAEAAAAAAABSR0JDAAAAAwAAAABSZCAgZG91YkBv4AAAAAAAAAAAAEdybiBkb3ViQG/gAAAAAAAAAAAAQmwgIGRvdWJAb+AAAAAAAAAAAABCcmRUVW50RiNSbHQAAAAAAAAAAAAAAABCbGQgVW50RiNSbHQAAAAAAAAAAAAAAABSc2x0VW50RiNQeGxAUgAAAAAAAAAAAAp2ZWN0b3JEYXRhYm9vbAEAAAAAUGdQc2VudW0AAAAAUGdQcwAAAABQZ1BDAAAAAExlZnRVbnRGI1JsdAAAAAAAAAAAAAAAAFRvcCBVbnRGI1JsdAAAAAAAAAAAAAAAAFNjbCBVbnRGI1ByY0BZAAAAAAAAOEJJTQPtAAAAAAAQAEgAAAABAAIASAAAAAEAAjhCSU0EJgAAAAAADgAAAAAAAAAAAAA/gAAAOEJJTQQNAAAAAAAEAAAAHjhCSU0EGQAAAAAABAAAAB44QklNA/MAAAAAAAkAAAAAAAAAAAEAOEJJTScQAAAAAAAKAAEAAAAAAAAAAjhCSU0D9QAAAAAASAAvZmYAAQBsZmYABgAAAAAAAQAvZmYAAQChmZoABgAAAAAAAQAyAAAAAQBaAAAABgAAAAAAAQA1AAAAAQAtAAAABgAAAAAAAThCSU0D+AAAAAAAcAAA/////////////////////////////wPoAAAAAP////////////////////////////8D6AAAAAD/////////////////////////////A+gAAAAA////////////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Mi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXA6Q3JlYXRlRGF0ZT0iMjAxNi0xMS0xNlQwODoxNDo1NSswODowMCIgeG1wOk1vZGlmeURhdGU9IjIwMTYtMTEtMTZUMTY6MTA6MzUrMDg6MDAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMTYtMTEtMTZUMTY6MTA6MzUrMDg6MDAiIGRjOmZvcm1hdD0iaW1hZ2UvanBlZyIgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIgcGhvdG9zaG9wOklDQ1Byb2ZpbGU9InNSR0IgSUVDNjE5NjYtMi4xIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjk5RjlCNTI2RDRBQkU2MTFCOEUxOUU3NUY3MENERTVGIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjk4RjlCNTI2RDRBQkU2MTFCOEUxOUU3NUY3MENERTVGIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6OThGOUI1MjZENEFCRTYxMUI4RTE5RTc1RjcwQ0RFNUYiPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjcmVhdGVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjk4RjlCNTI2RDRBQkU2MTFCOEUxOUU3NUY3MENERTVGIiBzdEV2dDp3aGVuPSIyMDE2LTExLTE2VDA4OjE0OjU1KzA4OjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ1M1IFdpbmRvd3MiLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNvbnZlcnRlZCIgc3RFdnQ6cGFyYW1ldGVycz0iZnJvbSBpbWFnZS9ibXAgdG8gaW1hZ2UvanBlZyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6OTlGOUI1MjZENEFCRTYxMUI4RTE5RTc1RjcwQ0RFNUYiIHN0RXZ0OndoZW49IjIwMTYtMTEtMTZUMTY6MTA6MzUrMDg6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDUzUgV2luZG93cyIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD94cGFja2V0IGVuZD0idyI/Pv/iDFhJQ0NfUFJPRklMRQABAQAADEhMaW5vAhAAAG1udHJSR0IgWFlaIAfOAAIACQAGADEAAGFjc3BNU0ZUAAAAAElFQyBzUkdCAAAAAAAAAAAAAAAAAAD21gABAAAAANMtSFAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWNw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"
  var base64_2 = "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"

  if (base64_1.length > 1024 * 1024 || base64_2 > 1024 * 1024) {
    output("输入的图片base64数据量过大");
    return;
  }

  var send = {
    base64file1: base64_1,
    base64file2: base64_2
  };
  sendMsg(CLT_MSG.BASE64_COMPARE, send, function (msg) {
    if (msg.err !== 0) {
      //iswaiting = false;
      return;
    }
    output("对比完成:照片1与照片2相似度为" + msg.cmpresult);
    //iswaiting = false;
  });
}

export function DetectFace() { //开启人脸检测
  if (bInitFI == false) {
    output("请先初始化人脸识别模块");
    return;
  }
  var send = {
    cap: 2
  };
  sendMsg(CLT_MSG.DETECT_FACE, send, function (msg) {
    if (msg.err !== 0) {
      //iswaiting = false;
      return;
    }
    output("视频" + send.cap + "开启人脸捕捉成功");
    //iswaiting = false;
  });
}

export function StopDetectFace() { //停止人脸检测
  if (bInitFI == false) {
    output("请先初始化人脸识别模块");
    return;
  }
  var send = {
    cap: 2
  };
  sendMsg(CLT_MSG.STOP_DETECT_FACE, send, function (msg) {
    if (msg.err !== 0) {
      //iswaiting = false;
      return;
    }
    output("视频" + send.cap + "停止人脸捕捉成功");
    //iswaiting = false;
  });
}

/*export  function UnitFI(){
    sendMsg(CLT_MSG.FI_UNIT,function(msg){
		if(msg.err !== 0)return;
		bInitFI = false;
		bInitLI = false;		
		output("人脸识别、活体检测反初始化成功");
	});	
};*/


var uploadId = 0;
var downloadId = 0;
var isuploadordownload = false;
var upprocess = 0;
var downprocess = 0;
export function start_progresstimer() {
  isuploadordownload = true;
  setTimeout("update_progress()", 100);
}

export function stop_progresstimer() {
  isuploadordownload = false;
}

export function update_progress() {
  if (!isuploadordownload) {
    document.getElementById('uploadprogress').value = 0;
    document.getElementById('downloadprogress').value = 0;
    stop_progresstimer();
    return;
  }
  if (uploadId == 0 && downloadId == 0) {
    isuploadordownload = false;
    document.getElementById('uploadprogress').value = 0;
    document.getElementById('downloadprogress').value = 0;
    stop_progresstimer();
    return;
  }
  if (uploadId != 0) {

    sendMsg(CLT_MSG.HTTP_GETPROGRESS, {
      idtask: uploadId
    }, function (msg) {
      if (msg.err !== 0) return;
      upprocess = msg.process;
    });

    if (upprocess <= 0)
      upprocess = 0;
    document.getElementById('uploadprogress').value = upprocess;
    document.getElementById('uploadprogress').value += "%";
    if (upprocess == 100) {
      var result;
      sendMsg(CLT_MSG.HTTP_GETRESULT, {
        idtask: uploadId
      }, function (msg) {
        if (msg.err !== 0) return;
        result = msg.error;
        // output("上传成功返回信息：" + result);
      });

      sendMsg(CLT_MSG.HTTP_CLOSE, {
        idtask: uploadId
      }, function (msg) {
        if (msg.err !== 0) return;
        // output("上传线程已关闭");
      });
      upprocess = 0;
      uploadId = 0;
      document.getElementById('uploadprogress').value = 0;
    }
  }
  if (downloadId != 0) {

    sendMsg(CLT_MSG.HTTP_GETPROGRESS, {
      idtask: downloadId
    }, function (msg) {
      if (msg.err !== 0) return;
      downprocess = msg.process;
    });
    if (downprocess <= 0)
      downprocess = 0;
    document.getElementById('downloadprogress').value = downprocess;
    document.getElementById('downloadprogress').value += "%";
    if (downprocess == 100) {
      sendMsg(CLT_MSG.HTTP_CLOSE, {
        idtask: downloadId
      }, function (msg) {
        if (msg.err !== 0) return;
        output("下载线程已关闭");
      });
      downprocess = 0;
      downloadId = 0;
      document.getElementById('downloadprogress').value = 0;
    }
  }
  setTimeout("update_progress()", 100);
}

export function UploadFile(APIUrl, fullName, gaopaiId) {
  // console.log(`${APIUrl}/api/file/base/${gaopaiId}`, '上传地址') //上传地址
  sendMsg(CLT_MSG.HTTP_UPLOAD, {
    url: `${APIUrl}/api/file/base/${gaopaiId}`,
    filepath: `D:\\contractPdf\\${fullName}`
  }, function (msg) {
    if (msg.err !== 0) return;
    uploadId = msg.idtask;
    output(uploadId);
    //获取上传结果
    // console.log('msg', msg)
    var error;
    sendMsg(CLT_MSG.HTTP_GETRESULT, {
      idtask: uploadId
    }, function (msg) {
      if (msg.err !== 0) return;
      // console.log('msg111', msg)
      error = msg.error;
      // output("上传id=" + uploadId + "\n上传错误信息：" + error);
      //error为空说明上传成功了，开始进度显示
      if (error == "")

        // console.log('111')
        console.log('上传成功', fullName, gaopaiId)
      document.querySelector('#contentId').textContent = '上传成功'
      // start_progresstimer();
    });
  });
}

export function DownloadFile() {
  sendMsg(CLT_MSG.HTTP_DOWNLOAD, {
    url: "http://flin.cc/Upload/banner/sample/测试.pdf",
    filepath: "F://测试.pdf"
  }, function (msg) {
    if (msg.err !== 0) return;
    downloadId = msg.idtask;
    output(downloadId);
    //获取上传结果
    var error;
    sendMsg(CLT_MSG.HTTP_GETRESULT, {
      idtask: downloadId
    }, function (msg) {
      if (msg.err !== 0) return;
      error = msg.error;
      output("下载id=" + downloadId + "\n下载错误信息：" + error);
      //error为空说明上传成功了，开始进度显示
      if (error == "")
        start_progresstimer();
    });
  });
}
